class Solution(object):
def isValid\(self, s\):
"""
:type s: str
:rtype: bool
"""
stack = \[\]
for i in range\(len\(s\)\):
if s\[i\] == '\(' or s\[i\] == '\[' or s\[i\] == '{':
stack.append\(s\[i\]\)
if s\[i\] == '\)':
if stack == \[\] or stack.pop\(\) != '\(':
return False
if s\[i\] == '\]':
if stack == \[\] or stack.pop\(\) != '\[':
return False
if s\[i\] == '}':
if stack == \[\] or stack.pop\(\) != '{':
return False
if stack:
return False
else:
return True
这里有两个keypoint:
如果直接用数量判断,而不是堆栈的话,那么([)]这样的是判断不出来的。所以必须得给定优先级
那么怎么给优先级呢?
通过堆栈的时候不同的判断条件的顺序来给